<?php
//To be deleted.
require_once ('BaseService.php');
/**
 * @author Virtualidad
 * @version 1.0
 * @created 29-dic-2010 09:57:49 a.m.
 */
class InscripcionesService extends BaseService {

    public function __construct($serviceBaseURL) {
        parent::__construct($serviceBaseURL);
    }

    public function getServiceClass() {
        return "Interesados";
    }

    /**
     *
     * @param Inscrito
     */
    function AgregarEstudiante(Inscritos $Inscrito) {
        $serializer = parent::getSerializer(parent::getMimeType(), "Inscritos");
        $data = $serializer->serialize($Interesado);

        $response = parent::invokeService("AgregarEstudiante", $data);
        return $response;
    }

    /**
     *
     * @param Inscrito
     */
    //
    function CreateInscrito(Inscritos $Inscrito) {

        $serializer = parent::getSerializer(parent::getMimeType(), "Inscritos");
        $data = $serializer->serialize($Interesado);

        $response = parent::invokeService("CreateInscrito", $data);
        return $response;
    }

    /**
     *
     * @param Interesado
     */
    //
    function CreateInteresado(Interesados $Interesado) {

        $serializer = parent::getSerializer(parent::getMimeType(), "Interesados");
        $data = $serializer->serialize($Interesado);
        $response = parent::invokeService("create", $data);
        return $response;
    }

    /**
     *
     * @param Identificacion
     */
    function getInscritoByIdentificacion(Identificacion $Identificacion) {

        $encoder = parent::getSerializer(parent::getMimeType(), "Identificacion");
        $id = $encoder->serialize($Identificacion);
        $response = parent::invokeService("GetCursosMatriculadosByEstudianteAndPeriodoAcademico", $id);

        Loader::using("models::entities::Inscritos");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "Inscritos", Inscritos::MAPPING());

        return $result;
    }

    /**
     *
     * @param CodigoPlan
     */
    function getInscritoByPlanEstudio($CodigoPlan) {
        $response = parent::invokeService("GetCursosMatriculadosByEstudianteAndPeriodoAcademico", $CodigoPlan);

        Loader::using("models::entities::Inscritos");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "Inscritos", Inscritos::MAPPING());

        return $result;
    }

    /**
     *
     * @param Estado
     * @param PeriodoAcademico
     */
    function getInscritosByEstadoAndPeriodoAcademico($Estado, $PeriodoAcademico) {
        $encoder = parent::getSerializer(parent::getMimeType(), "PeriodoAcademico");
        $periodo = $encoder->serialize($PeriodoAcademico);
        $data = $encoder->wrapArray(array(
                    "Estado" => $Estado,
                    "PeriodoAcademico" => $PeriodoAcademico
                        ), "GetInscritosByEstadoAndPeriodoAcademico"); //<--A root for potential xml support

        $response = parent::invokeService("GetInscritosByEstadoAndPeriodoAcademico", $data);
        Loader::using("models::entities::Inscritos");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "Inscritos", Inscritos::MAPPING());

        return $result;
    }

    /**
     *
     * @param Id
     */
    function getInscritosById($Id) {
        $response = parent::invokeService("GetInscritosById", $Id);

        Loader::using("models::entities::Inscritos");
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "Inscritos", Inscritos::MAPPING());

        return $result;
    }

    /**
     * 
     * @param PeriodoAcademico
     */
    function getInscritosByPeriodoAcademico(PeriodoAcademico $PeriodoAcademico) {
        $encoder = parent::getSerializer(parent::getMimeType(), "PeriodoAcademico");
        $periodo = $encoder->serialize($PeriodoAcademico);
        $response = parent::invokeService("GetInscritosByPeriodoAcademico", $periodo);

        Loader::using("models::entities::Inscritos");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "Inscritos", Inscritos::MAPPING());

        return $result;
    }

    /**
     *
     * @param Identificacion
     */
    //
    function getInteresadoByIdentificacion(Identificacion $Identificacion) {
        $encoder = parent::getSerializer(parent::getMimeType(), "Identificacion");
        $id = $encoder->serialize($Identificacion);
        $response = parent::invokeService("GetByIdentificacion", $id);

        Loader::using("models::entities::Interesados");
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "Interesados", Interesados::MAPPING());

        return $result;
    }

    /**
     *
     * @param PeriodoAcademico
     */
    function getInteresadosByPeriodoAcademico(PeriodoAcademico $PeriodoAcademico) {
        $encoder = parent::getSerializer(parent::getMimeType(), "PeriodoAcademico");
        $id = $encoder->serialize($PeriodoAcademico);
        $response = parent::invokeService("GetInteresadosByPeriodoAcademico", $id);

        Loader::using("models::entities::Interesados");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "Interesados", Interesados::MAPPING());

        return $result;
    }

    /**
     *
     * @param CodigoPlan
     */
    function getInteresadosByPlanEstudio($CodigoPlan) {
        $response = parent::invokeService("GetInteresadosByPlanEstudio", $CodigoPlan);

        Loader::using("models::entities::Interesados");
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "Interesados", Interesados::MAPPING());

        return $result;
    }

    /**
     *
     * @param Inscrito
     */
    function UpdateInscrito(Inscritos $Inscrito) {
        $encoder = parent::getSerializer(parent::getMimeType(), "Inscritos");
        $inscrito = $encoder->serialize($Inscrito);
        $response = parent::invokeService("UpdateInscrito", $inscrito);
        return $response;
    }

}

?>